/**
 * 校验用户是否是有权限的合法用户
 * 手段：校验token是否合法
 * @param {*} req 
 * @param {*} res 
 * @param {*} next 
 */
const {verifyToken} = require('../utils/tokenUtils')
const {CODE} = require('../utils/constants')
module.exports = async (req, res, next)=>{
    // 先要判断是不是预请求，如果是预请求，直接next 并return
    if(req.method === 'OPTIONS'){
        next();
        return;
    }
    // 1. 从请求头获取token
    let {token} = req.headers;
    // 2. 校验token是否合法
    //    2-1. 合法 next
    //    2-2. 不合法 返回状态码 401
    try{
        await verifyToken(token);
        next();
    }catch(e){
        res.statusCode = 401;// 状态码设置为401
        res.json({
            code:CODE.DATA_ERROR,
            message:'token不合法'
        })
    }
}